"2 变量的作用域（名字空间）
"2.1 基本变量命名空间
"在VimScript中默认的作用域是全局作用域，也就是说你在一个脚本文件中定义了一个变量，在其他脚本中也可以读取和修改这个变量。在任何编程语言中，全局变量的滥用都会造成混乱，所以VimScript提供了更多的非全局作用域。

"s:name 脚本文件作用域，此时s:name这个变量只在当前脚本文件中有效，其他的脚本文件中如果也定义了同名的s:name也没关系，因为这两者彼此独立。这一点与C中的static关键字类似。
"b:name 缓冲区作用域，b:name只在指定的缓冲区中有效
"w:name 窗口作用域，w:name只在指定的窗口中有效
"g:name 全局作用域，函数外定义的变量的默认值
"v:name vim预定义的变量，注意预定义变量不同于vim的选项(option)变量。
"l:name 函数内部的局部变量，函数内部定义的变量的默认值

"注意这些作用域只针对变量名，而不能作用于函数名。

"几个例子：

" 作用域
"let local = 10
"function MyFunc()
	"echo local
"endfunction


"单独运行上面的代码，并不会出错。但是当真正调用这个MyFunc()函数时，会报错，提示未定义变量local。这是因为定义函数的代码只是描述函数功能，只有运行时才会发现并不存在局部变量local，从而报错。需要修改为：

" 作用域
let local = 10
function MyFunc()
	echo g:local
endfunction
